﻿using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using GSQ.BusinessEntities;
using GSQ.DataAccess.DataSetTableAdapters;

namespace GSQ.DataAccess
{
    public class OriginalesAdicionalesDA
    {
        private ORIGINALES_ADICIONALESTableAdapter Adapter = new ORIGINALES_ADICIONALESTableAdapter();
        private V_ORIGINALES_ADICIONALESTableAdapter vAdapter = new V_ORIGINALES_ADICIONALESTableAdapter();
        private DataSet.ORIGINALES_ADICIONALESDataTable entities;
        private DataSet.ORIGINALES_ADICIONALESRow entity;

        public decimal Insert(ORIGINALES_ADICIONALES value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    Adapter.Connection = cnn;

                    entities = new DataSet.ORIGINALES_ADICIONALESDataTable();

                    entity = entities.NewORIGINALES_ADICIONALESRow();

                    entity.ID = value.ID;
                    entity.NRO_ADICIONAL = value.NRO_ADICIONAL.Trim();
                    entity.ID_DEPARTAMENTO = value.ID_DEPARTAMENTO;
                    entity.ID_ORIGINAL = value.ID_ORIGINAL;

                    entities.AddORIGINALES_ADICIONALESRow(entity);
                    Adapter.Update(entities);

                    value.ID = entity.ID;
                    return value.ID;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public decimal Update(ORIGINALES_ADICIONALES value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.Adapter.Connection = cnn;

                    entities = Adapter.GetDataByID(value.ID);
                    entity = entities.FirstOrDefault();


                    entity.NRO_ADICIONAL = value.NRO_ADICIONAL.Trim();
                    entity.ID_DEPARTAMENTO = value.ID_DEPARTAMENTO;
                    entity.ID_ORIGINAL = value.ID_ORIGINAL;

                    this.Adapter.Update(entities);

                    return entity.ID;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public ORIGINALES_ADICIONALES GetById(decimal id)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;

                    DataSet.V_ORIGINALES_ADICIONALESRow rw = vAdapter.GetDataByID(id).FirstOrDefault();
                    ORIGINALES_ADICIONALES originalA = null;
                    if (rw != null)
                    {
                        originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                    }
                    return originalA;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public ORIGINALES_ADICIONALES GetByNroAdicional(string value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;

                    DataSet.V_ORIGINALES_ADICIONALESRow rw = vAdapter.GetDataByNroAdicional(value.Trim()).FirstOrDefault();
                    ORIGINALES_ADICIONALES originalA = null;
                    if (rw != null)
                    {
                        originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                    }
                    return originalA;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetAll()
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetData())
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByIdOriginal(decimal value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByIdOriginal(value))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByNroOriginal(string value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByNroOriginal(value.Trim()))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByDescripcion(string value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByDescripcion(value.Trim()))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByDescripcion(decimal value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByIdDescripcion(value))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByCategoria(string value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByCategoria(value.Trim()))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByIdCategoria(decimal value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByIdCategoria(value))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByDepartamento(string value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByDepartamento(value.Trim()))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }

        public List<ORIGINALES_ADICIONALES> GetByIdDepartamento(decimal value)
        {
            using (SqlConnection cnn = new SqlConnection(Connection.GetConnectionString))
            {
                try
                {
                    cnn.Open();
                    this.vAdapter.Connection = cnn;
                    List<ORIGINALES_ADICIONALES> list = new List<ORIGINALES_ADICIONALES>();
                    foreach (DataSet.V_ORIGINALES_ADICIONALESRow rw in vAdapter.GetDataByIdDepartamento(value))
                    {
                        ORIGINALES_ADICIONALES originalA = new ORIGINALES_ADICIONALES();
                        originalA.ID = rw.ID;
                        originalA.ID_ORIGINAL = rw.ID_ORIGINAL;
                        originalA.NRO_ADICIONAL = rw.NRO_ADICIONAL;
                        originalA.DESCRIPCIONES = new DESCRIPCIONES { ID = rw.ID_DESCRIPCION, DESCRIPCION = rw.DESCRIPCION };
                        originalA.CATEGORIAS = new CATEGORIAS { ID = rw.ID_CATEGORIA, CATEGORIA = rw.CATEGORIA };
                        originalA.ID_DEPARTAMENTO = rw.ID_DEPARTAMENTO;
                        originalA.DEPARTAMENTOS = new DEPARTAMENTOS { ID = rw.ID_DEPARTAMENTO, DEPARTAMENTO = rw.DEPARTAMENTO };
                        originalA.ORIGINALES = new ORIGINALES { ID = rw.ID_ORIGINAL, NRO_ORIGINAL = rw.NRO_ORIGINAL };
                        list.Add(originalA);
                    }
                    return list;
                }
                finally
                {
                    if (cnn.State != System.Data.ConnectionState.Closed)
                        cnn.Close();
                }
            }
        }
    }
}
